(define-key rmail-summary-mode-map "?" 'describe-mode)
)
\f
+;;; Menu bar bindings.
+
+(define-key rmail-summary-mode-map [menu-bar] (make-sparse-keymap))
+
+(define-key rmail-summary-mode-map [menu-bar classify]
+ (cons "Classify" (make-sparse-keymap "Classify")))
+
+(define-key rmail-summary-mode-map [menu-bar classify output-inbox]
+ '("Output (inbox)" . rmail-summary-output))
+
+(define-key rmail-summary-mode-map [menu-bar classify output]
+ '("Output (Rmail)" . rmail-summary-output-to-rmail-file))
+
+(define-key rmail-summary-mode-map [menu-bar classify kill-label]
+ '("Kill Label" . rmail-summary-kill-label))
+
+(define-key rmail-summary-mode-map [menu-bar classify add-label]
+ '("Add Label" . rmail-summary-add-label))
+
+(define-key rmail-summary-mode-map [menu-bar summary]
+ (cons "Summary" (make-sparse-keymap "Summary")))
+
+(define-key rmail-summary-mode-map [menu-bar summary labels]
+ '("By Labels" . rmail-summary-by-labels))
+
+(define-key rmail-summary-mode-map [menu-bar summary recipients]
+ '("By Recipients" . rmail-summary-by-recipients))
+
+(define-key rmail-summary-mode-map [menu-bar summary topic]
+ '("By Topic" . rmail-summary-by-topic))
+
+(define-key rmail-summary-mode-map [menu-bar summary regexp]
+ '("By Regexp" . rmail-summary-by-regexp))
+
+(define-key rmail-summary-mode-map [menu-bar summary all]
+ '("All" . rmail-summary))
+
+(define-key rmail-summary-mode-map [menu-bar mail]
+ (cons "Mail" (make-sparse-keymap "Mail")))
+
+(define-key rmail-summary-mode-map [menu-bar mail continue]
+ '("Continue" . rmail-summary-continue))
+
+(define-key rmail-summary-mode-map [menu-bar mail forward]
+ '("Forward" . rmail-summary-forward))
+
+(define-key rmail-summary-mode-map [menu-bar mail retry]
+ '("Retry" . rmail-summary-retry-failure))
+
+(define-key rmail-summary-mode-map [menu-bar mail reply]
+ '("Reply" . rmail-summary-reply))
+
+(define-key rmail-summary-mode-map [menu-bar mail mail]
+ '("Mail" . rmail-summary-mail))
+
+(define-key rmail-summary-mode-map [menu-bar delete]
+ (cons "Delete" (make-sparse-keymap "Delete")))
+
+(define-key rmail-summary-mode-map [menu-bar delete expunge/save]
+ '("Expunge/Save" . rmail-summary-expunge-and-save))
+
+(define-key rmail-summary-mode-map [menu-bar delete expunge]
+ '("Expunge" . rmail-summary-expunge))
+
+(define-key rmail-summary-mode-map [menu-bar delete undelete]
+ '("Undelete" . rmail-summary-undelete))
+
+(define-key rmail-summary-mode-map [menu-bar delete delete]
+ '("Delete" . rmail-summary-delete-forward))
+
+(define-key rmail-summary-mode-map [menu-bar move]
+ (cons "Move" (make-sparse-keymap "Move")))
+
+(define-key rmail-summary-mode-map [menu-bar move search-back]
+ '("Search Back" . rmail-summary-search-backward))
+
+(define-key rmail-summary-mode-map [menu-bar move search]
+ '("Search" . rmail-summary-search))
+
+(define-key rmail-summary-mode-map [menu-bar move previous]
+ '("Previous Nondeleted" . rmail-summary-previous-msg))
+
+(define-key rmail-summary-mode-map [menu-bar move next]
+ '("Next Nondeleted" . rmail-summary-next-msg))
+
+(define-key rmail-summary-mode-map [menu-bar move last]
+ '("Last" . rmail-summary-last-message))
+
+(define-key rmail-summary-mode-map [menu-bar move first]
+ '("First" . rmail-summary-first-message))
+
+(define-key rmail-summary-mode-map [menu-bar move previous]
+ '("Previous" . rmail-summary-previous-all))
+
+(define-key rmail-summary-mode-map [menu-bar move next]
+ '("Next" . rmail-summary-next-all))
+\f
(defun rmail-summary-goto-msg (&optional n nowarn skip-rmail)
(interactive "P")
(if (consp n) (setq n (prefix-numeric-value n)))
(rmail-abort-edit)
(pop-to-buffer rmail-summary-buffer))
+(defun rmail-summary-search-backward (regexp &optional n)
+ "Show message containing next match for REGEXP.
+Prefix argument gives repeat count; negative argument means search
+backwards (through earlier messages).
+Interactively, empty argument means use same regexp used last time."
+ (interactive
+ (let* ((reversep (>= (prefix-numeric-value current-prefix-arg) 0))
+ (prompt
+ (concat (if reversep "Reverse " "") "Rmail search (regexp): "))
+ regexp)
+ (if rmail-search-last-regexp
+ (setq prompt (concat prompt
+ "(default "
+ rmail-search-last-regexp
+ ") ")))
+ (setq regexp (read-string prompt))
+ (cond ((not (equal regexp ""))
+ (setq rmail-search-last-regexp regexp))
+ ((not rmail-search-last-regexp)
+ (error "No previous Rmail search string")))
+ (list rmail-search-last-regexp
+ (prefix-numeric-value current-prefix-arg))))
+ ;; Don't use save-excursion because that prevents point from moving
+ ;; properly in the summary buffer.
+ (let ((buffer (current-buffer)))
+ (unwind-protect
+ (progn
+ (set-buffer rmail-buffer)
+ (rmail-search regexp (- n)))
+ (set-buffer buffer))))
+
(defun rmail-summary-search (regexp &optional n)
"Show message containing next match for REGEXP.
Prefix argument gives repeat count; negative argument means search
(error "No previous Rmail search string")))
(list rmail-search-last-regexp
(prefix-numeric-value current-prefix-arg))))
- (save-excursion
- (set-buffer rmail-buffer)
- (rmail-search regexp n)))
+ ;; Don't use save-excursion because that prevents point from moving
+ ;; properly in the summary buffer.
+ (let ((buffer (current-buffer)))
+ (unwind-protect
+ (progn
+ (set-buffer rmail-buffer)
+ (rmail-search regexp n))
+ (set-buffer buffer))))
(defun rmail-summary-toggle-header ()
"Show original message header if pruned header currently shown, or vice versa."